{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "在使用天勤量化之前，默认您已经知晓并同意以下免责条款，如果不同意请立即停止使用：https://www.shinnytech.com/blog/disclaimer/\n"
     ]
    }
   ],
   "source": [
    "from tqsdk import TqApi, TqAuth"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "ename": "Exception",
     "evalue": "TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mException\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, account, auth, url, backtest, web_gui, debug, loop, disable_print, _stock, _ins_url, _md_url, _td_url)\u001b[0m\n\u001b[0;32m    286\u001b[0m             \u001b[1;32mwhile\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"mdhis_more_data\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mtrade_more_data\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 287\u001b[1;33m                 \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwait_update\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdeadline\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdeadline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m  \u001b[1;31m# 等待连接成功并收取截面数据\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    288\u001b[0m                     \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"接收数据超时，请检查客户端及网络是否正常\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36mwait_update\u001b[1;34m(self, deadline)\u001b[0m\n\u001b[0;32m   1646\u001b[0m             raise Exception(\n\u001b[1;32m-> 1647\u001b[1;33m                 \"TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE\")\n\u001b[0m\u001b[0;32m   1648\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_wait_timeout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mException\u001b[0m: TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mException\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-2-e1f31217b1bf>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mapi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTqApi\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mauth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTqAuth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"crazylight\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"Lyq1123\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, account, auth, url, backtest, web_gui, debug, loop, disable_print, _stock, _ins_url, _md_url, _td_url)\u001b[0m\n\u001b[0;32m    290\u001b[0m                 \u001b[0mtrade_more_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_account\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_trade_more_data_and_order_id\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    291\u001b[0m         \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 292\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    293\u001b[0m             \u001b[1;32mraise\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    294\u001b[0m         \u001b[1;31m# 使用非空list,使得wait_update()能正确发送peek_message; 使用空dict, 使得is_changing()返回false, 因为截面数据不算做更新数据.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36mclose\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    346\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0masyncio\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_running_loop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    347\u001b[0m             raise Exception(\n\u001b[1;32m--> 348\u001b[1;33m                 \"TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE\")\n\u001b[0m\u001b[0;32m    349\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    350\u001b[0m         \u001b[1;31m# 总会发送 serial_extra_array 数据，由 TqWebHelper 处理\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mException\u001b[0m: TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE"
     ]
    }
   ],
   "source": [
    "api = TqApi(auth=TqAuth(\"crazylight\", \"Lyq1123\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqApi._windows_patch() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py:2873> cb=[TqApi._on_task_done()]>\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqApi._notify_watcher() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py:2878> cb=[TqApi._on_task_done()]>\n",
      "c:\\vnstudio\\lib\\site-packages\\simplejson\\decoder.py:400: RuntimeWarning: coroutine 'TqApi._windows_patch' was never awaited\n",
      "  return self.scan_once(s, idx=_w(s, idx).end())\n",
      "c:\\vnstudio\\lib\\site-packages\\simplejson\\decoder.py:400: RuntimeWarning: coroutine 'TqApi._notify_watcher' was never awaited\n",
      "  return self.scan_once(s, idx=_w(s, idx).end())\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqApi._windows_patch() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py:2873> cb=[TqApi._on_task_done()]>\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqApi._notify_watcher() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py:2878> cb=[TqApi._on_task_done()]>\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqConnect._run() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\connect.py:57> cb=[TqApi._on_task_done()]>\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqReconnect._run() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\connect.py:158> cb=[TqApi._on_task_done()]>\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<_run() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\sim.py:89> cb=[TqApi._on_task_done()]>\n",
      "Task was destroyed but it is pending!\n",
      "task: <Task pending coro=<TqWebHelper._run() running at c:\\vnstudio\\lib\\site-packages\\tqsdk\\tqwebhelper.py:73> cb=[TqApi._on_task_done()]>\n",
      "c:\\vnstudio\\lib\\site-packages\\simplejson\\decoder.py:400: RuntimeWarning: coroutine 'TqConnect._run' was never awaited\n",
      "  return self.scan_once(s, idx=_w(s, idx).end())\n",
      "c:\\vnstudio\\lib\\site-packages\\simplejson\\decoder.py:400: RuntimeWarning: coroutine 'TqReconnect._run' was never awaited\n",
      "  return self.scan_once(s, idx=_w(s, idx).end())\n",
      "c:\\vnstudio\\lib\\site-packages\\simplejson\\decoder.py:400: RuntimeWarning: coroutine '_run' was never awaited\n",
      "  return self.scan_once(s, idx=_w(s, idx).end())\n",
      "c:\\vnstudio\\lib\\site-packages\\simplejson\\decoder.py:400: RuntimeWarning: coroutine 'TqWebHelper._run' was never awaited\n",
      "  return self.scan_once(s, idx=_w(s, idx).end())\n"
     ]
    },
    {
     "ename": "Exception",
     "evalue": "TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mException\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, account, auth, url, backtest, web_gui, debug, loop, disable_print, _stock, _ins_url, _md_url, _td_url)\u001b[0m\n\u001b[0;32m    286\u001b[0m             \u001b[1;32mwhile\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"mdhis_more_data\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mtrade_more_data\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 287\u001b[1;33m                 \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwait_update\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdeadline\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdeadline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m  \u001b[1;31m# 等待连接成功并收取截面数据\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    288\u001b[0m                     \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"接收数据超时，请检查客户端及网络是否正常\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36mwait_update\u001b[1;34m(self, deadline)\u001b[0m\n\u001b[0;32m   1646\u001b[0m             raise Exception(\n\u001b[1;32m-> 1647\u001b[1;33m                 \"TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE\")\n\u001b[0m\u001b[0;32m   1648\u001b[0m         \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_wait_timeout\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mException\u001b[0m: TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE",
      "\nDuring handling of the above exception, another exception occurred:\n",
      "\u001b[1;31mException\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-5-b188abab271c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;31m# api = TqApi(TqAccount(\"H海通期货\", \"4003242\", \"123456\"), auth=TqAuth(\"信易账户\", \"账户密码\"))      # 创建 TqApi 实例, 指定交易账户\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mapi\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTqApi\u001b[0m\u001b[1;33m(\u001b[0m \u001b[0mauth\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mTqAuth\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Crazylight\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"Lyq1123\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m      \u001b[1;31m# 创建 TqApi 实例, 指定交易账户\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      5\u001b[0m \u001b[0mq_1910\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mapi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_quote\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"SHFE.rb1910\"\u001b[0m\u001b[1;33m)\u001b[0m                         \u001b[1;31m# 订阅近月合约行情\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      6\u001b[0m \u001b[0mt_1910\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mTargetPosTask\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mapi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"SHFE.rb1910\"\u001b[0m\u001b[1;33m)\u001b[0m                    \u001b[1;31m# 创建近月合约调仓工具\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, account, auth, url, backtest, web_gui, debug, loop, disable_print, _stock, _ins_url, _md_url, _td_url)\u001b[0m\n\u001b[0;32m    290\u001b[0m                 \u001b[0mtrade_more_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_account\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_trade_more_data_and_order_id\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    291\u001b[0m         \u001b[1;32mexcept\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 292\u001b[1;33m             \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    293\u001b[0m             \u001b[1;32mraise\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    294\u001b[0m         \u001b[1;31m# 使用非空list,使得wait_update()能正确发送peek_message; 使用空dict, 使得is_changing()返回false, 因为截面数据不算做更新数据.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\vnstudio\\lib\\site-packages\\tqsdk\\api.py\u001b[0m in \u001b[0;36mclose\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m    346\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0masyncio\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_running_loop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    347\u001b[0m             raise Exception(\n\u001b[1;32m--> 348\u001b[1;33m                 \"TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE\")\n\u001b[0m\u001b[0;32m    349\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    350\u001b[0m         \u001b[1;31m# 总会发送 serial_extra_array 数据，由 TqWebHelper 处理\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mException\u001b[0m: TqSdk 使用了 python3 的原生协程和异步通讯库 asyncio，您所使用的 IDE 不支持 asyncio, 请使用 pycharm 或其它支持 asyncio 的 IDE"
     ]
    }
   ],
   "source": [
    "from tqsdk import TqApi, TqAuth, TqAccount, TargetPosTask\n",
    "\n",
    "# api = TqApi(TqAccount(\"H海通期货\", \"4003242\", \"123456\"), auth=TqAuth(\"信易账户\", \"账户密码\"))      # 创建 TqApi 实例, 指定交易账户\n",
    "api = TqApi( auth=TqAuth(\"Crazylight\", \"Lyq1123\"))      # 创建 TqApi 实例, 指定交易账户\n",
    "q_1910 = api.get_quote(\"SHFE.rb1910\")                         # 订阅近月合约行情\n",
    "t_1910 = TargetPosTask(api, \"SHFE.rb1910\")                    # 创建近月合约调仓工具\n",
    "q_2001 = api.get_quote(\"SHFE.rb2001\")                         # 订阅远月合约行情\n",
    "t_2001 = TargetPosTask(api, \"SHFE.rb2001\")                    # 创建远月合约调仓工具\n",
    "\n",
    "while True:\n",
    "  api.wait_update()                                           # 等待数据更新\n",
    "  spread = q_1910[\"last_price\"] - q_2001[\"last_price\"]        # 计算近月合约-远月合约价差\n",
    "  print(\"当前价差:\", spread)\n",
    "  if spread > 250:\n",
    "    print(\"价差过高: 空近月，多远月\")                            \n",
    "    t_1910.set_target_volume(-1)                              # 要求把1910合约调整为空头1手\n",
    "    t_2001.set_target_volume(1)                               # 要求把2001合约调整为多头1手\n",
    "  elif spread < 200:\n",
    "    print(\"价差回复: 清空持仓\")                               # 要求把 1910 和 2001合约都调整为不持仓\n",
    "    t_1910.set_target_volume(0)\n",
    "    t_2001.set_target_volume(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
